A search engine is a computer program that helps a user to locate information. The search engine can be communicatively linked to one or more clients. A user at a client can enter a searchable text and obtain from the search engine a list of results that match search criteria contained in the searchable text. While search engines may be applied in a variety of contexts, search engines are especially useful for locating results that are accessible through the Internet. Results that may be located through a search engine include, for example, files whose content is composed in a page description language such as Hypertext Markup Language (HTML). Such files are typically called pages. One can use a search engine to generate a list of Universal Resource Locators (URLs) and/or HTML links to files, or pages, that are likely to be of interest.
The search engine typically has an interface at a client (e.g., a personal computer) that allows a user to specify search criteria and displays search results to the user. In a typical scenario involving a client and a search engine, the interaction between the two is monolithic. That is, a user types in a searchable text and, when finished, submits the searchable text to the search engine in a request. In response, the search engine returns the search results relating to the searchable text to the client for displaying to the user.
Some systems provide a user with speculative search results before the search criteria have been fully formulated and submitted. As the user types, the client can send partially formed search criteria to the search engine. The search engine then sends back speculative search results to the client for presentation. As the user continues the input, the previous speculated search results may be invalidated; more partially formed search criteria are sent to the search engine. In response, the search engine sends back new rounds of speculative results to the client for presentation. This continues until the user locates a desired result or otherwise terminates the search.
A disadvantage of these techniques is that many requests for speculative search results can be potentially sent to a search engine as a user types. The problem is further aggravated if the user types fast and/or inputs a long search text.
Thus, a need exists for improved ways of supporting interaction between a client and a search engine.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.